package main

import (
	"fmt"
	"mypack"
)

/**
学习GO语言的接口（interface）的定义，特性以及使用方式。掌握一个GO包——sort包。
用学到的知识实现下面的题目：
需要再Day4任务的基础上实现经典题目排序：要求使用GO语言的接口（interface）进行数据的排序。需要使用GO的基础包sort。待排序的内容是Day4中录入的房源信息（至少录入5条房源信息），然后对这批房源信息按照房源名称（字符串）、价格（整形数值），面积（浮点数数值）分别进行排序并按排好序的顺序输出到界面上。
*/


func main() {
	h1 := mypack.House{"BJ1", "劲松农光东里", 2899, 14.5, true, "学区房,紧邻地铁"}
	h2 := mypack.House{"BJ11", "劲松农光西里", 3899, 16.5, false, "学区房,紧邻地铁"}
	h3 := mypack.House{"BJ3", "劲松农光北里", 1899, 8.5, true, "学区房,紧邻地铁"}
	h4 := mypack.House{"BJ4", "劲松农光南里", 2699, 13.5, false, "学区房,紧邻地铁"}
	h5 := mypack.House{"BJ2", "魔方北里", 2199, 11.5, true, "学区房,紧邻地铁"}

	var slice []interface{}
	slice = append(slice, h1,h2,h3,h4,h5)
	fmt.Println("name 排序")
	mypack.NameSort(slice)
	show(slice)

	fmt.Println("price 排序")
	mypack.PriceSort(slice)
	show(slice)

	fmt.Println("aera 排序")
	mypack.AeraSort(slice)
	show(slice)
}

func show(slice []interface{}) {
	for k,v := range slice {
		fmt.Printf("%d: 编号：%s, 名称：%s, 价格：%d, 面积：%0.2f, 首租：%v, 标签：%s\n", k+1, v.(mypack.House).Sn,v.(mypack.House).Name,v.(mypack.House).Price,v.(mypack.House).Area,v.(mypack.House).IsFirstRent,v.(mypack.House).Tags)
	}
}